iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0

前幾天我們介紹了 Vault 的基本架構,也了解了 Root Token、Seal / Unseal 等概念。

但講了這麼多,Vault 到底要怎麼拿來「存密碼」?

今天就來建立我們在 Vault 裡的第一個 Secret。

什麼是 Secrets Engine?

Vault 並不是單純把所有帳號密碼直接存進某張資料表,而是透過 Secrets Engine 管理不同類型的 Secrets。

而 HashiCorp Vault 支援相當多種類的 Secret Engine,舉幾個比較常見的當例子:

  • KV Secrets Engine:儲存一般的 Key-Value 資料
  • Database Secrets Engine:Database Credentials
  • AWS/Azure Secrets Engine: AWS/Azure Credentials
  • PKI Secrets Engine:管理憑證

至於今天的重頭戲,就是我們要在Vault裡儲存第一組帳號密碼,Grant這邊以最常見的KV為例來進行操作。

首先,run起server後,需要從Server的console output export兩個環境變數,主要是使用Vault CLI時所需要的Https憑證(如果你起的時候沒有用tls就不需要)及Vault所在的位址:

export VAULT_CACERT='xxx'
export VAULT_ADDR='xxx'

執行Vault login登入伺服器

vault login

查看目前已有的Secure engine

vault secrets list

https://ithelp.ithome.com.tw/upload/images/20260920/201289257zTaF9lyYI.png
type=kv那個即為key-value enginee,而如果本身沒有建過kv engine則需要輸入以下command:

vault secrets enable -path=secret kv-v2

這裡的:

-path=secret

代表我們把這個 Secrets Engine 掛載在 secret/ 這個路徑底下。

寫入第一個 Secret

現在我們來存入第一組帳號密碼:

vault kv put secret/myapp \ username=grant \ password=my-secret-password

https://ithelp.ithome.com.tw/upload/images/20260920/20128925YqjzYIarKr.png
這代表我們在 secret/myapp 這個位置存入一組 Key-Value。

username = grant
password = my-secret-password

"myapp"可以是任何名稱,可以以此來識別不同應用程式,如果成功,Vault 會顯示 Secret 的相關資訊。

讀取 Secret

存入之後,下一步當然是要試著把它讀出來啦!

vault kv get secret/myapp

https://ithelp.ithome.com.tw/upload/images/20260920/20128925a6B6D4x1CO.png
有發現了嗎? 這其實就是之後 Application 與 Vault 整合時非常重要的概念。

我們不再需要把 "password=my-secret-password" 直接 Hard Code 在 Application 裡面或是local的任一檔案,而是讓 Application 經過 Vault Authentication 取得適當權限後,再從指定的 Secret Path 取得需要的 Credential。
把帳號密碼的權責從Application分離出去,統一由Vault進行管理。

更新 Secret

如果今天 Password 改變了,也可以再次執行:

vault kv put secret/myapp \ username=grant \ password=new-password

https://ithelp.ithome.com.tw/upload/images/20260920/201289257iQtrv9zaC.png
KV Version 2 的一個重要特色,就是支援 Secret Versioning。
也就是說,新資料寫入之後,舊版本並不會立刻消失,仍然支援讀取。

可以透過

vault kv metadata get secret/myapp

查看 Secret 的版本資訊,甚至可以指定讀取舊版本:

vault kv get -version=1 secret/myapp

刪除 Secret

如果不再需要這組 Secret,可以執行:

vault kv delete secret/myapp

可以看到 deletion_time 已經有時間戳記了!
https://ithelp.ithome.com.tw/upload/images/20260920/20128925OZH80PYv0E.png

不過要特別注意,對 KV v2 而言,這個操作主要是將目前版本標記為刪除,並不代表所有歷史資料都立刻被永久清除。

這也是為什麼理解 KV v2 的 Versioning、Delete 與 Destroy 差異很重要。

另外,雖然Vault提供了Web UI介面,但以軟體工程師起家的我還是習慣用Command prompt來操作,若是操作UI的話,應該不難找到對應的button,就先不在文章中介紹囉!


上一篇
Day 7. 初始化 Vault:Root Token、Unseal Keys 與基本操作
系列文
身分驗證你我他 ─ 使用 HashiCorp Vault 與 Terraform 打造 Secret 與 Identity 實驗室8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言